package utils

import (
	"VideoManageSystem/internal/model"
	"fmt"
	"os"

	"github.com/disintegration/imaging"
	ffmpeg "github.com/u2takey/ffmpeg-go"
)

func SanitizeUser(user model.User) model.User {
	user.Password = "******"
	return user
}

// ExtractFirstFrame 从指定视频路径提取第一帧并保存为图片
func ExtractFirstFrame(videoPath, outputImagePath string) error {
	tmpImage := fmt.Sprintf("%s_frame.jpg", videoPath)

	// 使用 ffmpeg 提取第一帧
	err := ffmpeg.Input(videoPath).
		Filter("select", ffmpeg.Args{fmt.Sprintf("eq(n\\,0)")}).
		Output(tmpImage, ffmpeg.KwArgs{"vframes": 1}).
		OverWriteOutput().
		Run()
	if err != nil {
		return err
	}

	// 调整大小并保存为目标封面
	// 打开临时图像文件，读入内存
	img, err := imaging.Open(tmpImage)
	if err != nil {
		return err
	}

	// 可选调整尺寸
	resized := imaging.Resize(img, 640, 0, imaging.Lanczos)

	// 将调整后的图像保存到最终的目标路径
	if err := imaging.Save(resized, outputImagePath); err != nil {
		return err
	}

	// 删除临时图像
	_ = os.Remove(tmpImage)

	return nil
}
